package com.agritech.decorator;

import com.agritech.proxy.MachineProxy;
// 实际应用中可能需要访问 AgriculturalMachineContext 来获取油量
// 但为了保持装饰器对代理的依赖，这里仅作模拟

public class AutoRefuelReminderDecorator extends MachineDecorator {
    private double fuelThreshold = 20.0; // 低油量阈值

    public AutoRefuelReminderDecorator(MachineProxy decoratedMachineProxy) {
        super(decoratedMachineProxy);
    }

    private void checkFuelLevelAndRemind() {
        // 模拟获取油量并提醒
        // 真实场景下，decoratedMachineProxy 可能需要提供获取油量的方法，
        // 或者此装饰器直接操作 AgriculturalMachineContext (如果设计允许)
        double currentFuel = Math.random() * 100; // 模拟一个油量
        System.out.println("装饰器 [加油提醒]: 农机 [" + decoratedMachineProxy.getMachineId() + "] 当前模拟油量: " + String.format("%.1f", currentFuel) + "%");
        if (currentFuel < fuelThreshold) {
            System.out.println("警告! 装饰器 [加油提醒]: 农机 [" + decoratedMachineProxy.getMachineId() + "] 油量低于 " + fuelThreshold + "%! 请及时加油!");
        }
    }

    @Override
    public void workOperation(String userId) {
        checkFuelLevelAndRemind(); // 作业前检查油量
        super.workOperation(userId);
        System.out.println("装饰器 [加油提醒]: 作业已执行，将持续监控油量。");
    }

    @Override
    public void displayStatus(String userId) {
        super.displayStatus(userId);
        checkFuelLevelAndRemind(); // 显示状态时也检查油量
    }
}